# encoding=utf-8

"""DrScanTools
    dr路径文件扫描类， 提供功能如下:
        1. 返回一个按照时间新到旧的排序列表，并过滤其中非图片，以及非目标的文件
            通常最新的文件就是机器刚刚生成的文件，同时也可以屏蔽不同系统文件读入顺序的不同
        2. 返回一个打标列表，用于区分原图和曝光图
"""
import os


class DrScanTools:
    def __init__(self, scan_dir: str):
        self.scan_dir = scan_dir

    def scan_once(self):
        # 扫描图片文件
        image_files = [f for f in os.listdir(self.scan_dir) if f.lower().endswith(('.jpg', '.jpeg', '.png'))]

        # 过滤非目标文件
        dst_files = [f for f in image_files if 'center' in f.lower()]

        # 按照时间排序
        sort_files = sorted(dst_files, key=lambda x: os.path.getmtime(os.path.join(self.scan_dir, x)), reverse=True)
        return sort_files

    def label_list(self, files: list[str]):
        label_list = [1 if os.path.splitext(f)[0].endswith('s') else 0 for f in files]
        return label_list

    def filter_list(self, enh: bool = True):
        files = self.scan_once()
        labels = self.label_list(files)

        r_l = []
        flag = 0 if enh else 1

        for f, l in zip(files, labels):
            if l == flag:
                r_l.append(f)
        return r_l

    def get_list(self):
        return self.scan_once()


if __name__ == '__main__':
    import time

    dst = r"C:\Users\imed\Desktop\sampleData\明星数据"
    t = DrScanTools(dst)
    t1 = time.perf_counter()
    res = t.filter_list(True)
    t2 = time.perf_counter()
    for r in res:
        print(r)

    print("time cost: ", t2 - t1, "len", len(res))
